<?php

/***********************************************/
/*TITULO */
/***********************************************/
echo" <div class=\"pag_content\">
 	<div class=\"pag_content_title\">
		<div class=\"pag_title_cap\">Cap&iacute;tulo 7: </div>
		<div class=\"pag_title_cont\">	SQL y PL/SQL</div>
    </div>
    <div class=\"pag_content_body\">         
	<div class=\"contenido_principal\">	
		<br />";
/***********************************************/
/*TITULO PARRAFO */
/***********************************************/
echo "
	<div class=\"parrafo_titulo\">
	 Introducci&oacute;n SQL
	</div>";

/***********************************************/
/*CONTENIDO*/
/***********************************************/
echo "
<div class=\"parrafo\" align=\"justify\">
Vamos a hacer un repaso b&aacute;sico de algunas sentencias de SQL, Insert, Update y Delete.
</div>
<h3>INSERT</h3>
<div class=\"parrafo\" align=\"justify\">
La sintaxis mas conocida del insert es:
</div>
<center><img src=\"images/oca_cap7_insert.gif\" alt=\"EnterPrise Manager\" /></center>
<div class=\"parrafo\" align=\"justify\">
Podemos insertar nosotros directamente los valores:
</div>
<blockquote style=\"COLOR: #2e5348; FONT-SIZE: 12px; FONT-WEIGHT: bold FONT:Arial, Helvetica, sans-serif\"><pre>
<p>sql&gt; INSERT INTO MOGU.PRUEBA1 (ID_PRUEBA, NOMBRE) VALUES (22,'SYS');

</p></pre></blockquote>
<div class=\"parrafo\" align=\"justify\">
O insertar los valores que nos devuelve una quiery:
</div>
<blockquote style=\"COLOR: #2e5348; FONT-SIZE: 12px; FONT-WEIGHT: bold FONT:Arial, Helvetica, sans-serif\"><pre>
<p>sql&gt; INSERT INTO MOGU.PRUEBA1 (ID_PRUEBA, NOMBRE) SELECT 3, NOMBRE FROM MOGU.PRUEBA1
 WHERE ID_PRUEBA=22;

</p></pre></blockquote>
<div class=\"parrafo\" align=\"justify\">
Una cosa que seguramente muchos de nosotros no sepais es que con una unica sentencia de insert podemos insertar en varias tablas diferentes:
</div>
<center><img src=\"images/oca_cap7_insert2.gif\" alt=\"EnterPrise Manager\" /></center>
<br />
<blockquote style=\"COLOR: #2e5348; FONT-SIZE: 12px; FONT-WEIGHT: bold FONT:Arial, Helvetica, sans-serif\"><pre>
<p>sql&gt; INSERT FIRST
	   WHEN policy_type = 'P' THEN
	INTO property_premium_fact(policy_id,policy_nbr ,premium_amt)
	   VALUES (property_premium_seq.nextval,policy_number ,gross_premium)
	   WHEN p.policy_type = 'C' THEN
	INTO property_premium_fact(policy_id,policy_nbr ,premium_amt)
	  VALUES (property_premium_seq.nextval,policy_number ,gross_premium)
	SELECT policy_nbr ,gross_premium ,policy_type 
	FROM policies
	WHERE policy_date >=TRUNC(SYSDATE,'MM') - TO_YMINTERVAL('00-01');
	
</p></pre></blockquote>
<div class=\"parrafo\" align=\"justify\">
Como vemos en la sintaxis que se muestra en la imagen, aparecen las clausulas FIRST y ALL. Con ALL Oracle evalua cada uno de las condiciones WHEN mientras que con FIRST hara el insert en la primera sentencia que cumpla la condicion WHEN.
</div>
<h3>UPDATE</h3>
<div class=\"parrafo\" align=\"justify\">
La sintaxis de UPDATE es:
</div>
<center><img src=\"images/oca_cap7_update.gif\" alt=\"EnterPrise Manager\" /></center>
<div class=\"parrafo\" align=\"justify\">
En el update podemos directamente insertar nosotros los valores separados por comas:
</div>
<blockquote style=\"COLOR: #2e5348; FONT-SIZE: 12px; FONT-WEIGHT: bold FONT:Arial, Helvetica, sans-serif\"><pre>
<p>sql&gt; UPDATE MOGU.PRUEBA1 SET ID_PRUEBA=0, NOMBRE='NULO' WHERE MOD(ID_PRUEBA,2)=0;

</p></pre></blockquote>
<div class=\"parrafo\" align=\"justify\">
O utilizando el resultado de una query:
</div>
<blockquote style=\"COLOR: #2e5348; FONT-SIZE: 12px; FONT-WEIGHT: bold FONT:Arial, Helvetica, sans-serif\"><pre>
<p>sql&gt; UPDATE MOGU.PRUEBA1 
	SET (ID_PRUEBA,NOMBRE)=(
		SELECT SUM(ID_PRUEBA),'MODIFICADO' FROM MOGU.PRUEBA1)
    WHERE ID_PRUEBA=0;

</p></pre></blockquote>

<h3>DELETE</h3>
<div class=\"parrafo\" align=\"justify\">
La sintaxis de delete la mostramos en la siguiente imagen:
</div>
<center><img src=\"images/oca_cap7_delete.gif\" alt=\"EnterPrise Manager\" /></center>
<div class=\"parrafo\" align=\"justify\">
Os pongo un ejemplo que seguramente os resultara muy util. Os eliminara los ids duplicados de una tabla.
</div>
<blockquote style=\"COLOR: #2e5348; FONT-SIZE: 12px; FONT-WEIGHT: bold FONT:Arial, Helvetica, sans-serif\"><pre>
<p>sql&gt; DELETE MOGU.PRUEBA3 WHERE ROWID NOT IN (SELECT MAX(ROWID) 
	FROM MOGU.PRUEBA3 GROUP BY ID_PRUEBA);

</p></pre></blockquote>

<div class=\"parrafo\" align=\"justify\">
Si queremos borrar todas las filas de una tabla podemos optar por dos soluciones:
</div>
<blockquote style=\"COLOR: #2e5348; FONT-SIZE: 12px; FONT-WEIGHT: bold FONT:Arial, Helvetica, sans-serif\"><pre>
<p>sql&gt; DELETE FROM MOGU.PRUEBA1;

sql&gt; TRUNCATE TABLE MOGU.PRUEBA1;

</p></pre></blockquote>
<div class=\"parrafo\" align=\"justify\">
Con la consideraci&oacute;n que TRUNCATE al ser una sentencia DDL no soporta ROLLBACK;
</div>

";

/***********************************************/
/*PIE*/
/***********************************************/
echo"
	</div> 		 
    </div>
    <div class=\"pag_content_footer\">
    </div>
    <div class=\"pag_content_nav\">		
		<div class=\"pag_contenido_left\">
			<a  class=\"cap_next\" href=\"oca_main.php?cap=7&part=0\">	&lt; Anterior </a>
		 </div>
		<div class=\"pag_contenido_right\" align=\"right\">	
			<a  class=\"cap_next\" href=\"oca_main.php?cap=7&part=2\">	Siguiente &gt;</a>
		 </div>
	</div>      
</div>
";

?>